package com.shijie.sjoj.model.pojo.entity;

import com.shijie.sjoj.model.base.BasePojo;
import com.shijie.sjoj.model.pojo.base.Difficulty;
import lombok.Builder;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 题目实体类
 *
 * @author ZSJ
 */
@Data
@Builder
public class Quiz implements BasePojo {

    /**
     * 题目id
     */
    private Long quizId;

    /**
     * 题号
     */
    private Integer quizNum;

    /**
     * 标题
     */
    private String title;

    /**
     * 难度
     */
    private Difficulty difficulty;

    /**
     * 描述
     */
    private String description;

    /**
     * 原型出入参数类型（最末为出参），json形式的String[]（原型入参、原型结果）
     */
    private String paramsType;

    /**
     * 原型输入集存储路径
     */
    private String incomePath;

    /**
     * 原型结果集存储路径
     */
    private String outcomePath;

    /**
     * 分类，不用枚举分类因为不固定
     */
    private String category;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 创建人id
     */
    private Long createUserId;

    /**
     * 更新人id
     */
    private Long updateUserId;

    public Quiz() {
        this.quizId = null;
        this.quizNum = null;
        this.title = null;
        this.difficulty = null;
        this.description = null;
        this.paramsType = null;
        this.incomePath = null;
        this.outcomePath = null;
        this.category = null;
        this.createTime = null;
        this.updateTime = null;
        this.createUserId = null;
        this.updateUserId = null;
    }

    public Quiz(Long quizId, Integer quizNum, String title, Difficulty difficulty, String description, String category,
                String paramsType, String incomePath, String outcomePath,
                LocalDateTime createTime, LocalDateTime updateTime,
                Long createUserId, Long updateUserId) {
        this.quizId = quizId;
        this.quizNum = quizNum;
        this.title = title;
        this.difficulty = difficulty;
        this.description = description;
        this.paramsType = paramsType;
        this.incomePath = incomePath;
        this.outcomePath = outcomePath;
        this.category = category;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.createUserId = createUserId;
        this.updateUserId = updateUserId;
    }


}
